const db = require('../../db')
const bcryct = require('bcryptjs')

const Jwt = require('jsonwebtoken')
const config = require('../../config.js')


// 获取用户信息
exports.getUserInfo = (req,res)=>{
    var str = "select id,username,sex,photo,birthday,isdelete,schToken,school,stu_id,tel,trade_likes,trade_num,connect_num,uid from user where id = ?"
    db.query(str,req.user.id,(err,results)=>{
        if(err) return res.cc(err)
        
        if(results.length != 1) return res.cc("查询信息错误，稍后请重新尝试")
        res.send({
            status:0,
            message:"获取信息成功",
            data:results[0]
        })
    })
}

// 设置用户信息
exports.setUserInfo = (req,res)=>{
    // 登录状态
    const userInfo = req.body
    const user = {
        photo:userInfo.photo,
        sex:userInfo.sex,
        birthday:userInfo.birthday,
        isdelete:0,
        
        // photo:userInfo.photo == null? photos : userInfo.photo
    }
    var str =" update user set ? where id=? "
    db.query(str,[user,req.user.id],(error,results)=>{
        if(error) return res.cc(error)
        if(results.affectedRows != 1) return res.cc("更新用户信息失败")
        res.cc(0,"更新成功")
    })
}

// // 更换用户头像  并更换评论表中的头像
exports.changeAvator = (req,res)=>{
    var str = 'update user set photo = ? where id = ?'
    db.query(str,[req.body.user_pic,req.user.id],(err,results)=>{
        if(err) return res.cc(err)
        if(results.affectedRows != 1) return res.cc("更新用户头像失败1")
        str = 'update comments set aut_photo = ? where u_id = ?'
        db.query(str,[req.body.user_pic,req.user.id],(err,results)=>{
         
        if(err) return res.cc(err)
       
            
        res.cc("更新用户头像成功",0)
    })
       
    }) 
}

// 修改密码
exports.changePsd = (req,res)=>{
    // 判断原密码是否输入正确
   
    const user = req.user

    var str = "select * from user where id = ?"
    db.query(str,user.id,(err,results)=>{
        if(err) return res.cc(err)
        if(results.length != 1) return res.cc("数据库错误，稍后请重新尝试")
         // 用户输入的密码
        var dataString = JSON.stringify(results);
        results = JSON.parse(dataString);
    
        // 数据库密码
        // 防止用户输入密码为空
        var oldPsd = ''
        var Psd = ''
        if(req.body.length <2){
            return res.cc("未输入旧密码或新密码")
        }else{
            oldPsd = req.body.oldPsd;
            Psd = results[0].password
        }
   
        var isTrue = bcryct.compareSync(oldPsd,Psd)
        if(isTrue){
            // 判断新密码和老密码是否相同
            var newPsd = req.body.newPsd
            isTrue = oldPsd == newPsd
            if(isTrue) return res.cc("新旧密码一致，请重新输入")

            newPsd = bcryct.hashSync(newPsd,11)
            str = "update user set password =? where id =?"
            db.query(str,[newPsd,user.id],(err,results)=>{
                if(err) return res.cc(err)
                if(results.affectedRows != 1) return res.cc("修改密码失败")
                res.cc("修改密码成功",0)
            })
        }else{
            return res.cc("旧密码输入错误")
        }
    })
}

// 用户校园认证
exports.schToken = (req,res)=>{
  
    const stuInfo = req.body
    // 存入学生信息
    var str = "update user set school = ?,stu_id =? where id = ?"
    
    db.query(str,[stuInfo.school,stuInfo.stuId,req.user.id],(err,results)=>{
        if(err) return res.cc(err)
        if(results.affectedRows != 1) return res.cc("未知错误，稍后请重新尝试")
        str = "update user set schToken = 0 where id = ?"

        db.query(str,req.user.id,(err,results)=>{
            if(err) return res.cc(err)
            if(results.affectedRows != 1) return res.cc("未知错误，稍后请重新尝试")
            res.send({
                status:0,
                message:"认证成功"
            })
        })
    })
}

// 修改学校名称

exports.changeSchool = (req,res)=>{
    var str = 'update user set school = ? where id = ?'
  
    db.query(str,[req.body.school,req.user.id],(err,results)=>{
        if(err) return res.cc(err)
        if(results.affectedRows != 1) return res.cc("更新学校失败")
        res.cc("更新成功",0)
    }) 
}

// 修改用户名  需要修改trade、question、schArt，comments表中的名字
exports.changeUserName = (req,res)=>{
    const username = req.body.username
    var str = 'update user set username = ? where id = ?'
  
    db.query(str,[username,req.user.id],(err,results)=>{
        if(err) return res.cc(err)
        if(results.affectedRows != 1) return res.cc("更新用户名失败")
        // 修改trade
        str = 'update trade set author = ? where aut_id = ?'
        db.query(str,[username,req.user.id],(err,results)=>{
            if(err) return res.cc(err)
            // if(results.affectedRows != 1) return res.cc("更新用户名失败")

            // 修改question
        str = 'update question set author = ? where aut_id = ?'
        db.query(str,[username,req.user.id],(err,results)=>{
            if(err) return res.cc(err)
            // if(results.affectedRows != 1) return res.cc("更新用户名失败")
        // 修改schArt 如果当前账号为管理员或超管，则执行
            if(req.user.id === 0 || req.user.id === 9){
                str = 'update scharticle set author = ? where aut_id = ?'
                db.query(str,[username,req.user.id],(err,results)=>{
                    if(err) return res.cc(err)
                    // if(results.affectedRows != 1) return res.cc("更新用户名失败")
        
               
                })
            }
            // 修改comments
            str = 'update comments set aut_name = ? where u_id = ?'
            db.query(str,[username,req.user.id],(err,results)=>{
                if(err) return res.cc(err)
                // if(results.affectedRows != 1) return res.cc("更新用户名失败")
                res.cc("更新成功评论区",0)
            })
    })  
    }) 
})
}

// 修改学号
exports.changeStuId = (req,res)=>{
    var str = 'update user set stu_id = ? where id = ?'
    db.query(str,[req.body.stuId,req.user.id],(err,results)=>{
        if(err) return res.cc(err)
        if(results.affectedRows != 1) return res.cc("更新学号失败")
        res.cc("更新成功",0)
    }) 
}
// 修改性别
exports.changeSex = (req,res)=>{
    var str = 'update user set sex = ? where id = ?'
   
    db.query(str,[req.body.sex,req.user.id],(err,results)=>{
        if(err) return res.cc(err)
        if(results.affectedRows != 1) return res.cc("更新性别失败")
        res.cc("更新成功",0)
    }) 
}
// 获取用户发表的二手信息、交流问答、收藏的二手信息数量,    ||下架的二手商品数量
exports.getTraConNum = (req,res)=>{
    var str = "select trade_num,connect_num,trade_likes from user where id = ?"
    db.query(str,req.user.id,(err,results)=>{
        if(err) return res.cc(err)
        if(results.length != 1) return res.cc("数据库错误，稍后请重新尝试")
        
        res.send({
            status:0,
            message:"获取成功",
            date:results[0]
        })
    })
}

// 用户发表的二手信息列表
exports.getUserPubTrade = (req,res)=>{
    var str = "select t.id,t.title,t.price,t.content,t.likes,t.commentNum,t.pubdata,t.isdelete,t.isdown from trade t join user u on u.id = ? and t.aut_id = ? order by pubdata desc"
    db.query(str,[req.user.id,req.user.id],(err,results)=>{
        if(err) return res.cc(err)
       
        res.send({
            results,
            status:0
        })
    })
}
// 换取token
exports.exchangeToken = (req,res)=>{
    // 验证refreshToken是否过期
    // 如果没有过期，则返回新的token
    let user = req.user
    const token = Jwt.sign(user,config.JwtSecret,{
        expiresIn:"10s"
    })
    console.log(token)
    // const refreshToken = Jwt.sign(req.user,config.JwtSecret,{
    //     expiresIn:"15day"
    // })
   
     res.cc({
         message:"登录成功",
         status:0
        // data:{
        //     token:'Bearer' + token,
        //     token:'Bearer' + refreshToken
        // }
    })
}
// 用户发表的问答交流列表---
exports.getUserPubQuestion = (req,res)=>{
    var str = "select q.* from question q join user u on u.id = ? and q.aut_id = ? "
    db.query(str,[req.user.id,req.user.id],(err,results)=>{
        if(err) return res.cc(err)
       
        res.send({
            results,
            status:0
        })
    })
}
